package com.ourteam.product.model.dao;

import net.dao.BaseQueryBean;
import net.dao.BaseWhereCriterion;
import net.dao.IDataAccessInterface;

import org.apache.commons.lang.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;


/**
 * Template Name : DAO查询对象
 * Template Version : 1
 * Template Last Modfiy Date : Sat Aug 19 10:06:32 IRKT 2017
 * Auto Generate Date : 2017-11-17 11:01:10
  * Warning ! This file will be overwrite when regenerate !
  *
 */
public class ProductModelServiceFeatureRelateDAOQueryBean extends BaseQueryBean {
    public ProductModelServiceFeatureRelateDAOQueryBean() {
        super();
    }

    public ProductModelServiceFeatureRelateDAOQueryBean(
        BaseQueryBean aQueryBean) {
        super(aQueryBean);
    }

    public ProductModelServiceFeatureRelateDAOQueryBean(
        BaseQueryBean aQueryBean, Map tableReplaceMap) {
        super(aQueryBean, tableReplaceMap);
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();

        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }

        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        return new Criteria(this);
    }

    public void addIdSelectProperty() {
        addIdSelectProperty("id");
    }

    public void addIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Id, aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Id, "id");
        }
    }

    public void addServiceIdSelectProperty() {
        addServiceIdSelectProperty("serviceId");
    }

    public void addServiceIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceId,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceId,
                "serviceId");
        }
    }

    public void addStatusSelectProperty() {
        addStatusSelectProperty("status");
    }

    public void addStatusSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Status,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Status,
                "status");
        }
    }

    public void addRemarksSelectProperty() {
        addRemarksSelectProperty("remarks");
    }

    public void addRemarksSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Remarks,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.Remarks,
                "remarks");
        }
    }

    public void addFeatureVersionRelateIdSelectProperty() {
        addFeatureVersionRelateIdSelectProperty("featureVersionRelateId");
    }

    public void addFeatureVersionRelateIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId,
                "featureVersionRelateId");
        }
    }

    public void addServiceNameSelectProperty() {
        addServiceNameSelectProperty("serviceName");
    }

    public void addServiceNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceName,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceName,
                "serviceName");
        }
    }

    public void addServiceCanTestSelectProperty() {
        addServiceCanTestSelectProperty("serviceCanTest");
    }

    public void addServiceCanTestSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceCanTest,
                aAlias);
        } else {
            addSelectProperty(IProductModelServiceFeatureRelateDAO.ServiceCanTest,
                "serviceCanTest");
        }
    }

    public void addAllSelectProperties() {
        addIdSelectProperty();

        addServiceIdSelectProperty();

        addStatusSelectProperty();

        addRemarksSelectProperty();

        addFeatureVersionRelateIdSelectProperty();

        addServiceNameSelectProperty();

        addServiceCanTestSelectProperty();
    }

    public static class Criteria extends BaseWhereCriterion<ProductModelServiceFeatureRelateDAOQueryBean> {
        protected Criteria(
            ProductModelServiceFeatureRelateDAOQueryBean aParentObject) {
            super(aParentObject);
        }

        public Criteria andIdIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " is null");

            return this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                " is not null");

            return this;
        }

        public Criteria andIdIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                " is not null AND " + IProductModelServiceFeatureRelateDAO.Id +
                " <> ''");

            return this;
        }

        public Criteria andIdIsEmpty() {
            addCriterion("(" + IProductModelServiceFeatureRelateDAO.Id +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Id +
                " = '')");

            return this;
        }

        public Criteria andIdEqualTo(long value) {
            return andIdEqualTo(Long.valueOf(value));
        }

        public Criteria andIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " = ",
                value, "id");

            return this;
        }

        public Criteria andIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotEqualTo(long value) {
            return andIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " <>",
                value, "id");

            return this;
        }

        public Criteria andIdNotEqualToOrIsNull(long value) {
            return andIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Id +
                " <>", value, "id");

            return this;
        }

        public Criteria andIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThan(long value) {
            return andIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " >", value,
                "id");

            return this;
        }

        public Criteria andIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(long value) {
            return andIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " >=",
                value, "id");

            return this;
        }

        public Criteria andIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThan(long value) {
            return andIdLessThan(Long.valueOf(value));
        }

        public Criteria andIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " <", value,
                "id");

            return this;
        }

        public Criteria andIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(long value) {
            return andIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " <=",
                value, "id");

            return this;
        }

        public Criteria andIdLessThanOrEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Id);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdIn(long[] values) {
            if (values.length == 1) {
                return andIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id + " in",
                    values, "id");

                return this;
            }
        }

        public Criteria andIdNotIn(long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                    " not in", values, "id");

                return this;
            }
        }

        public Criteria andIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id + " in",
                    values, "id");

                return this;
            }
        }

        public Criteria andIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                    " not in", values, "id");

                return this;
            }
        }

        public Criteria andIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id + " in",
                    Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                    " not in", Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdBetween(long value1, long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " between",
                value1, value2, "id");

            return this;
        }

        public Criteria andIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id + " between",
                value1, value2, "id");

            return this;
        }

        public Criteria andIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                " not between", value1, value2, "id");

            return this;
        }

        public Criteria andIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Id +
                " not between", value1, value2, "id");

            return this;
        }

        public Criteria andServiceIdIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " is null");

            return this;
        }

        public Criteria andServiceIdIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " is not null");

            return this;
        }

        public Criteria andServiceIdIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.ServiceId + " <> ''");

            return this;
        }

        public Criteria andServiceIdIsEmpty() {
            addCriterion("(" + IProductModelServiceFeatureRelateDAO.ServiceId +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceId + " = '')");

            return this;
        }

        public Criteria andServiceIdEqualTo(long value) {
            return andServiceIdEqualTo(Long.valueOf(value));
        }

        public Criteria andServiceIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " = ", value, "serviceId");

            return this;
        }

        public Criteria andServiceIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdNotEqualTo(long value) {
            return andServiceIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andServiceIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " <>", value, "serviceId");

            return this;
        }

        public Criteria andServiceIdNotEqualToOrIsNull(long value) {
            return andServiceIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andServiceIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceId + " <>", value,
                "serviceId");

            return this;
        }

        public Criteria andServiceIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdGreaterThan(long value) {
            return andServiceIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andServiceIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId + " >",
                value, "serviceId");

            return this;
        }

        public Criteria andServiceIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdGreaterThanOrEqualTo(long value) {
            return andServiceIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andServiceIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " >=", value, "serviceId");

            return this;
        }

        public Criteria andServiceIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdLessThan(long value) {
            return andServiceIdLessThan(Long.valueOf(value));
        }

        public Criteria andServiceIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId + " <",
                value, "serviceId");

            return this;
        }

        public Criteria andServiceIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdLessThanOrEqualTo(long value) {
            return andServiceIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andServiceIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " <=", value, "serviceId");

            return this;
        }

        public Criteria andServiceIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdIn(long[] values) {
            if (values.length == 1) {
                return andServiceIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " in", values, "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdNotIn(long[] values) {
            if (values.length == 1) {
                return andServiceIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " not in", values, "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andServiceIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " in", values, "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andServiceIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " not in", values, "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andServiceIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " in", Arrays.asList(values), "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andServiceIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                    " not in", Arrays.asList(values), "serviceId");

                return this;
            }
        }

        public Criteria andServiceIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceIdBetween(long value1, long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " between", value1, value2, "serviceId");

            return this;
        }

        public Criteria andServiceIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " between", value1, value2, "serviceId");

            return this;
        }

        public Criteria andServiceIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " not between", value1, value2, "serviceId");

            return this;
        }

        public Criteria andServiceIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceId +
                " not between", value1, value2, "serviceId");

            return this;
        }

        public Criteria andStatusIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " is null");

            return this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " is not null");

            return this;
        }

        public Criteria andStatusIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.Status + " <> ''");

            return this;
        }

        public Criteria andStatusIsEmpty() {
            addCriterion("(" + IProductModelServiceFeatureRelateDAO.Status +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Status +
                " = '')");

            return this;
        }

        public Criteria andStatusEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " = ",
                value, "status");

            return this;
        }

        public Criteria andStatusEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " <>",
                value, "status");

            return this;
        }

        public Criteria andStatusNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Status +
                " <>", value, "status");

            return this;
        }

        public Criteria andStatusNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " >",
                value, "status");

            return this;
        }

        public Criteria andStatusGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " >=",
                value, "status");

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " <",
                value, "status");

            return this;
        }

        public Criteria andStatusLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " <=",
                value, "status");

            return this;
        }

        public Criteria andStatusLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Status);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " like",
                buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " not like", buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                    " in", values, "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                    " not in", values, "status");

                return this;
            }
        }

        public Criteria andStatusIn(String[] values) {
            if (values.length == 1) {
                return andStatusEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                    " in", Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(String[] values) {
            if (values.length == 1) {
                return andStatusNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                    " not in", Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andStatusBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " between", value1, value2, "status");

            return this;
        }

        public Criteria andStatusNotBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Status +
                " not between", value1, value2, "status");

            return this;
        }

        public Criteria andRemarksIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " is null");

            return this;
        }

        public Criteria andRemarksIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " is not null");

            return this;
        }

        public Criteria andRemarksIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.Remarks + " <> ''");

            return this;
        }

        public Criteria andRemarksIsEmpty() {
            addCriterion("(" + IProductModelServiceFeatureRelateDAO.Remarks +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Remarks +
                " = '')");

            return this;
        }

        public Criteria andRemarksEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " = ",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " <>",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " is null OR " + IProductModelServiceFeatureRelateDAO.Remarks +
                " <>", value, "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " >",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " >=",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " <",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " <=",
                value, "remarks");

            return this;
        }

        public Criteria andRemarksLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.Remarks);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " like", buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " not like", buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                    " in", values, "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                    " not in", values, "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(String[] values) {
            if (values.length == 1) {
                return andRemarksEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                    " in", Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(String[] values) {
            if (values.length == 1) {
                return andRemarksNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                    " not in", Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " between", value1, value2, "remarks");

            return this;
        }

        public Criteria andRemarksNotBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.Remarks +
                " not between", value1, value2, "remarks");

            return this;
        }

        public Criteria andFeatureVersionRelateIdIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " is null");

            return this;
        }

        public Criteria andFeatureVersionRelateIdIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " is not null");

            return this;
        }

        public Criteria andFeatureVersionRelateIdIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <> ''");

            return this;
        }

        public Criteria andFeatureVersionRelateIdIsEmpty() {
            addCriterion("(" +
                IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " = '')");

            return this;
        }

        public Criteria andFeatureVersionRelateIdEqualTo(long value) {
            return andFeatureVersionRelateIdEqualTo(Long.valueOf(value));
        }

        public Criteria andFeatureVersionRelateIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " = ", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotEqualTo(long value) {
            return andFeatureVersionRelateIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andFeatureVersionRelateIdNotEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <>", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotEqualToOrIsNull(long value) {
            return andFeatureVersionRelateIdNotEqualToOrIsNull(Long.valueOf(
                    value));
        }

        public Criteria andFeatureVersionRelateIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <>", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThan(long value) {
            return andFeatureVersionRelateIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andFeatureVersionRelateIdGreaterThan(
            java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " >", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThanOrEqualTo(
            long value) {
            return andFeatureVersionRelateIdGreaterThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andFeatureVersionRelateIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " >=", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThan(long value) {
            return andFeatureVersionRelateIdLessThan(Long.valueOf(value));
        }

        public Criteria andFeatureVersionRelateIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThanOrEqualTo(long value) {
            return andFeatureVersionRelateIdLessThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andFeatureVersionRelateIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <=", value, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andFeatureVersionRelateIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdIn(long[] values) {
            if (values.length == 1) {
                return andFeatureVersionRelateIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " in", values, "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdNotIn(long[] values) {
            if (values.length == 1) {
                return andFeatureVersionRelateIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " not in", values, "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andFeatureVersionRelateIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " in", values, "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdNotIn(
            List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andFeatureVersionRelateIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " not in", values, "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andFeatureVersionRelateIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " in", Arrays.asList(values), "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andFeatureVersionRelateIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                    " not in", Arrays.asList(values), "featureVersionRelateId");

                return this;
            }
        }

        public Criteria andFeatureVersionRelateIdIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andFeatureVersionRelateIdBetween(long value1,
            long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " between", value1, value2, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " between", value1, value2, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotBetween(long value1,
            long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " not between", value1, value2, "featureVersionRelateId");

            return this;
        }

        public Criteria andFeatureVersionRelateIdNotBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.FeatureVersionRelateId +
                " not between", value1, value2, "featureVersionRelateId");

            return this;
        }

        public Criteria andServiceNameIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " is null");

            return this;
        }

        public Criteria andServiceNameIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " is not null");

            return this;
        }

        public Criteria andServiceNameIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.ServiceName + " <> ''");

            return this;
        }

        public Criteria andServiceNameIsEmpty() {
            addCriterion("(" +
                IProductModelServiceFeatureRelateDAO.ServiceName +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceName + " = '')");

            return this;
        }

        public Criteria andServiceNameEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " = ", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameNotEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " <>", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceName + " <>",
                value, "serviceName");

            return this;
        }

        public Criteria andServiceNameNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameGreaterThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " >", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " >=", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameLessThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " <", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameLessThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " <=", value, "serviceName");

            return this;
        }

        public Criteria andServiceNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " like", buffer.toString(), "serviceName");

            return this;
        }

        public Criteria andServiceNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " not like", buffer.toString(), "serviceName");

            return this;
        }

        public Criteria andServiceNameIn(List<String> values) {
            if (values.size() == 1) {
                return andServiceNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                    " in", values, "serviceName");

                return this;
            }
        }

        public Criteria andServiceNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andServiceNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                    " not in", values, "serviceName");

                return this;
            }
        }

        public Criteria andServiceNameIn(String[] values) {
            if (values.length == 1) {
                return andServiceNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                    " in", Arrays.asList(values), "serviceName");

                return this;
            }
        }

        public Criteria andServiceNameNotIn(String[] values) {
            if (values.length == 1) {
                return andServiceNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                    " not in", Arrays.asList(values), "serviceName");

                return this;
            }
        }

        public Criteria andServiceNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceNameBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " between", value1, value2, "serviceName");

            return this;
        }

        public Criteria andServiceNameNotBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceName +
                " not between", value1, value2, "serviceName");

            return this;
        }

        public Criteria andServiceCanTestIsNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " is null");

            return this;
        }

        public Criteria andServiceCanTestIsNotNull() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " is not null");

            return this;
        }

        public Criteria andServiceCanTestIsNotEmpty() {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " is not null AND " +
                IProductModelServiceFeatureRelateDAO.ServiceCanTest + " <> ''");

            return this;
        }

        public Criteria andServiceCanTestIsEmpty() {
            addCriterion("(" +
                IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceCanTest + " = '')");

            return this;
        }

        public Criteria andServiceCanTestEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " = ", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestNotEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " <>", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " is null OR " +
                IProductModelServiceFeatureRelateDAO.ServiceCanTest + " <>",
                value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestGreaterThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " >", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " >=", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestLessThan(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " <", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestLessThanOrEqualTo(String value) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " <=", value, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelServiceFeatureRelateDAO.ServiceCanTest);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andServiceCanTestLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " like", buffer.toString(), "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " not like", buffer.toString(), "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestIn(List<String> values) {
            if (values.size() == 1) {
                return andServiceCanTestEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                    " in", values, "serviceCanTest");

                return this;
            }
        }

        public Criteria andServiceCanTestNotIn(List<String> values) {
            if (values.size() == 1) {
                return andServiceCanTestNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                    " not in", values, "serviceCanTest");

                return this;
            }
        }

        public Criteria andServiceCanTestIn(String[] values) {
            if (values.length == 1) {
                return andServiceCanTestEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                    " in", Arrays.asList(values), "serviceCanTest");

                return this;
            }
        }

        public Criteria andServiceCanTestNotIn(String[] values) {
            if (values.length == 1) {
                return andServiceCanTestNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                    " not in", Arrays.asList(values), "serviceCanTest");

                return this;
            }
        }

        public Criteria andServiceCanTestIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andServiceCanTestBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " between", value1, value2, "serviceCanTest");

            return this;
        }

        public Criteria andServiceCanTestNotBetween(String value1, String value2) {
            addCriterion(IProductModelServiceFeatureRelateDAO.ServiceCanTest +
                " not between", value1, value2, "serviceCanTest");

            return this;
        }
    }
}
